package com.cloudeye.business.job.mapper;

import com.cloudeye.business.job.entity.ScheduledTask;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface ScheduledTaskMapper {
    /**
     * 根据key 获取 任务信息
     */
    @Select("select * from scheduled_task where task_key = '${taskKey}' ")
    ScheduledTask getByKey(@Param("taskKey") String taskKey);

    /**
     * 获取程序初始化需要自启的任务信息
     */
    @Select("select * from scheduled_task where start_flag=1 ")
    List<ScheduledTask> getAllNeedStartTask();

    /**
     * 获取所有任务
     */
    @Select("<script>" +
            "select * from scheduled_task where 1=1 " +
            "<if test= 'task.taskDesc !=null and task.taskDesc !=\"\"'>" +
            "and (TASK_KEY like CONCAT('%', CONCAT(#{task.taskDesc}, '%')) or TASK_DESC like CONCAT('%', CONCAT(#{task.taskDesc}, '%')))" +
            "</if>" +
            "ORDER BY task_key " +
            "</script> ")
    List<ScheduledTask> getAllTask(@Param("task") ScheduledTask scheduledTask);

    /**
     * 更新任务
     */
    @Update("UPDATE scheduled_task SET start_flag = #{startFlag} where task_key =#{taskKey}")
    @Options(useGeneratedKeys = false)
    int updateTaskStatus(@Param("taskKey") String taskKey, @Param("startFlag") int startFlag);


    /**
     * 更新任务
     */
    @Update("UPDATE scheduled_task SET TASK_CLASS = #{taskKey.taskClass}, TASK_DESC = #{taskKey.taskDesc},TASK_CRON =#{taskKey.taskCron},UPDATEBY = #{taskKey.updateby},updatetime = sysdate where task_key =#{taskKey.taskKey}")
    @Options(useGeneratedKeys = false)
    int updateTask(@Param("taskKey") ScheduledTask taskKey);


    /**
     * 更新任务
     */
    @Insert("INSERT INTO scheduled_task(task_class,task_key, task_desc, task_cron, start_flag, createtime,CREATEBY) " +
            "VALUES (#{taskKey.taskClass}, #{taskKey.taskKey}, #{taskKey.taskDesc}, #{taskKey.taskCron}, #{taskKey.startFlag}, #{taskKey.createtime} ,#{taskKey.createby})")
    int InsertTask(@Param("taskKey") ScheduledTask taskKey);
}
